package com.springboot.ww.platform.pd.ctms.service;



import com.springboot.ww.platform.pd.ctms.api.*;
import com.springboot.ww.platform.pd.ctms.dto.PdForecastDTO;
import com.springboot.ww.platform.pd.dto.PdStoreTokenVO;
import com.springboot.ww.platform.pd.dto.Record;

import java.util.List;

/**
 * 描述：拼多多接口代理类
 *
 * @author 🧑 ‍wanwei
 * @since 2024-05-13 18:10
 */
public interface IPdProxy {

	/**
	 * 根据regionId 获取域名
	 *
	 * @param regionId
	 * @return
	 */
	String getDoMainByRegionId(int regionId);

	/**
	 * 根据平台单号 获取域名 （平台单号内有域名信息）
	 *
	 * @param platOrderId
	 * @return
	 */
	String getDoMainByPlatOrderId(String platOrderId);

	/**
	 * 获取仓库信息
	 *
	 * @param pdStoreTokenVO
	 * @param warehouseCode
	 * @return
	 */
	String getWarehouseId(PdStoreTokenVO pdStoreTokenVO, String warehouseCode);

	/**
	 * 获取可用渠道
	 *
	 * @param pdStoreTokenVO
	 * @param platOrderId
	 * @param pdChannelReq
	 * @return
	 */
	List<PdChannelResp.ResultBean.OnlineChannelDtoListBean> getChannelList(PdStoreTokenVO pdStoreTokenVO, String platOrderId, PdChannelReq pdChannelReq);


	/**
	 * 预报
	 *
	 * @param pdForecastDTO
	 * @param pdStoreTokenVO
	 * @param record
	 * @param shipLater
	 */
	String postForecast(PdForecastDTO pdForecastDTO, PdStoreTokenVO pdStoreTokenVO, Record record, Boolean shipLater);

	/**
	 * 查询预报结果
	 *
	 * @param pdStoreTokenVO
	 * @param platformNumber
	 * @param packageSn
	 * @param record
	 */
	PdTrackResp.ResultBean.PackageInfoResultListBean getShipmentResult(PdStoreTokenVO pdStoreTokenVO, String platformNumber, String packageSn, Record record);

	/**
	 * 获取面单资源地址
	 *
	 * @param pdStoreTokenVO
	 * @param platformNumber
	 * @param packageSn
	 * @param record
	 * @return
	 */
	String getLabelInfo(PdStoreTokenVO pdStoreTokenVO, String platformNumber, String packageSn, Record record);

	/**
	 * 获取订单详情
	 *
	 * @param pdStoreTokenVO
	 * @param platformNumber
	 * @param record
	 * @return
	 */
	List<PdOrderDetailResp.ResultBeanX.ResultBean.OrderListBean> getOrderDetail(PdStoreTokenVO pdStoreTokenVO, String platformNumber, Record record);

	/**
	 * 获取订单发货信息
	 *
	 * @param pdStoreTokenVO
	 * @param record
	 * @param parentOrderSn
	 * @param orderSn
	 * @return
	 */
	PdShipmentResp.ResultBeanX.ResultBean.ShipmentInfoDTOBean getShipmentGet(PdStoreTokenVO pdStoreTokenVO, Record record, String parentOrderSn, String orderSn);

	/**
	 * 获取面单资源
	 *
	 * @param url
	 * @param platformNumber
	 * @param pdStoreTokenVO
	 */
	byte[] getLabelSource(String url, String platformNumber, PdStoreTokenVO pdStoreTokenVO);

	/**
	 * @param pdStoreTokenVO
	 * @param platformNumber
	 * @param record
	 * @return
	 */
	List<PdUnShipPackageResp.ResultDTO.UnshippedPackageDTO> getUnShipPackageResp(PdStoreTokenVO pdStoreTokenVO, String platformNumber, Record record);

	/**
	 * 重新预报
	 *
	 * @param pdForecastDTO
	 * @param pdStoreTokenVO
	 * @param record
	 */
	void updateForecast(PdForecastDTO pdForecastDTO, PdStoreTokenVO pdStoreTokenVO, Record record);
}
